// 1. 定义Compute接口
interface Compute {
	int computer(int n, int m);
}

// 2. 实现加法运算的类
class Add implements Compute {
	@Override// 标记这是重写Shape接口的area方法
//    @Override 是 Java 中的一个 注解（Annotation），主要作用是 标记当前方法是重写（覆盖）了父类或接口中的方法。
	public int computer(int n, int m) {
		return n + m;
	}
}

// 2. 实现减法运算的类
class Subtract implements Compute {
	@Override
	public int computer(int n, int m) {
		return n - m;
	}
}

// 2. 实现乘法运算的类
class Multiply implements Compute {
	@Override
	public int computer(int n, int m) {
		return n * m;
	}
}

// 2. 实现除法运算的类
class Divide implements Compute {
	@Override
	public int computer(int n, int m) {
		// 简单处理除数为0的情况
		if (m == 0) {
			System.out.println("除数不能为0");
			return 0;
		}
		return n / m;
	}
}

// 3. 设计UseCompute类
class UseCompute {
	public void useCom(Compute com, int one, int two) {
		int result = com.computer(one, two);
		System.out.println("运算结果：" + result);
	}
}

// 4. 主类Test
public class Test {
	public static void main(String[] args) {
		UseCompute useCompute = new UseCompute();

		// 加法运算
		System.out.print("3 + 5 = ");
		useCompute.useCom(new Add(), 3, 5);

		// 减法运算
		System.out.print("10 - 4 = ");
		useCompute.useCom(new Subtract(), 10, 4);

		// 乘法运算
		System.out.print("6 * 7 = ");
		useCompute.useCom(new Multiply(), 6, 7);

		// 除法运算
		System.out.print("20 / 4 = ");
		useCompute.useCom(new Divide(), 20, 4);

		// 测试除数为0的情况
		System.out.print("10 / 0 = ");
		useCompute.useCom(new Divide(), 10, 0);
	}
}
